Calculation View Performance

(C) Brandeis Consulting

Agenda

  • HANA Architektur
  • Tools
    • Performance Analyze Mode
    • Debug Query Mode
    • Explain Plan
    • SQL Analyzer / PlanViz
  • Tipps & Tricks zur Performance-Optimierung
  • Literatur/Blogs
(C) Brandeis Consulting

HANA Architektur

  • Spaltenbasierung
  • Kompression
  • In Memory
  • Insert-Only - Main & Delta
(C) Brandeis Consulting

HANA ist schnell, wenn

  • Die Operationen auf komprimierten Daten ausgeführt werden können
  • Ausreichend Hardware zur Verfügung steht
    • CPU Anzahl, zur Verteilung von Berechnungen
    • Ausreichend freier Speicher (50% bei Hot-Nodes)
(C) Brandeis Consulting

Performance Analysis Mode (1/2)

  • Performance Analysis Mode
    • Statische Analyse von Calc Views
    • Zeigt Mengengerüst von Quelltabellen
    • Partitionierung von Tabellen
  • Geeignet für:
    • Vergleich von JOIN-Bedingungen und Partitionen der Tabellen
  • Abschätzung Mengengerüst bei Ausführung
  • Anzahl Sätze nach JOIN abschätzen, Potential zur Verdichtung von Sätzen
(C) Brandeis Consulting

Performance Analysis Mode – Beispiel und Aufruf

  • Calculation View in Design-Sicht aufrufen ->
  • Button Performance Analysis anklicken
  • Bei manchen Knoten wird zusätzlich der Tab Performance Analysis angezeigt, siehe unten.

SAP Documentation

(C) Brandeis Consulting

Beispiel für eine Warnung im Performance Analysis Mode

(C) Brandeis Consulting

Debugging von Calculation Views

  • Knotenweise Analyse der Ausführung eines Calculation Views
  • Eingabe: SQL-Query auf oberstem Knoten
    • Für jeden Knoten wird daraus eine Query generiert
  • Erlaubt die Analyse der Logik in den Knoten

Beispiel:

  • Welche Spalten werden in welchem Knoten abgerufen?
  • Auswirkung Keep Flag
  • Ergebnis von JOIN oder UNION verstehen
  • Berechnung auf Einzelsatzebene nachvollziehen
(C) Brandeis Consulting

Wie ruft man den Debugger auf

  • Design-Sicht Calculation View
  • Button mit dem Käfer anklicken
  • Auf den Semantics-Knoten gehen
  • In den Details auf den Tab Debugging:

  • Execute drücken
  • Einzelne Knoten analysieren

(C) Brandeis Consulting

Beispiel: Debugging von Calculation Views

  • Demo und Übung
    • Aufruf vom Debugger für CV_CUBE_TASKS_USERS
  • Übung: Analyse vom Keep-Flag mit Debugger:
    • CV_KEEP_FLAG_DUE_DATE_01
(C) Brandeis Consulting

Debugging von Calculation Views

Was kann man nicht mit dem Debugger analysieren?

  • JOIN-Pruning von Knoten => Man erhält eine Fehlermeldung für Knoten, die
    nicht ausgeführt werden
  • Filter Pushdown => SQL-Where-Bedingung wird nur in oberstem Knoten
    angezeigt
  • Workaround: Manuell den Filter in den einzelnen Knoten hinzufügen =>
    Einzelsatz-Analyse möglich
    Debugger geeignet zur Analyse der Logik, weniger zur Performance-
    Optimierung
(C) Brandeis Consulting

Explain

  • Klassisches SQL-Tool, das es so auch für andere Datenbanken gibt.
  • Hilfreich auf hoher Ebene
  • Aufruf über die SQL-Konsole

Beispiel

(C) Brandeis Consulting

Ausführungsplananalyse von Calculation Views

Tools

  • PlanViz in Eclipse
  • SQL Analyzer im Database Explorer
  • HANA SQL Analyzer in Visual Studio Code

(C) Brandeis Consulting

PlanViz und Calculation Views

  • Analyse des Laufzeitverhaltens von Calculation Views
    • Abgefragte Tabellen
    • Speicherverbrauch, Laufzeit
    • Ausführungsplan, Operationen mit hohem Anteil an Laufzeit identifizieren
  • Statische vs. Dynamische Analyse
  • Verhalten mit verschiedenen Queries testen
    • Granulare Abfrage vs. Aggregierte Abfrage
    • Query mit Filterbedingung
    • Query mit reduzierten Spalten
    • Teure Queries erkennen
(C) Brandeis Consulting

Starten der Ausführungsplananalyse

  • Passendes SQL zum Zugriff auf den CalcView in der SQL-Konsole erfassen oder über den Debugger die Debug Query abgreifen.

PlanViz in Eclipse und HANA SQL

  • In Eclipse in die PlanViz Perspektive gehen
  • Datei öffnen

SQL Analyzer in WebIDE

  • Direkt auf Analyze SQL gehen

HANA SQL Analyzer in Visual Studio Code

  • Datei dort öffnen
hxeadm@hxe:/usr/sap/HXE/HDB00/hxe.brandeis.de/trace> ls *.plv
planviz_68A2E35860F7C3429005CC3D5F8B2708.plv
(C) Brandeis Consulting

Aufruf PlanViz – Ausführungssicht

  • Perspective: SAP HANA PlanViz
    • Übersicht:
    • Speicherverbrauch
    • Ausführungszeit
    • Dominante Operatoren
    • Verwendete Tabellen
  • Detailsicht (Executed Plan):
    • Ablauf
    • Operatoren (Join, Aggregation, Column Search)
    • Logischer vs. Physischer Plan
(C) Brandeis Consulting

Logischer und Physischer Plan

Logischer Plan

  • Höhere Flughöhe
  • Wie soll das Ergebnis erzeugt werden
  • Granularität:
    • JOIN
    • COLUMN Search - Z.B. Nachlesen von einzelnen Spalten
    • Filter
  • Sehr unterschiedliche Darstellung, je nach Ausführungs-Engine

Physischer Plan

  • Detailierte Flughöhe
  • Auf Spaltenebene
  • Wie wurden die Schritte des logischen Plans umgesetzt
  • Auf Granularität der einzelnen Operationen einer Spalte
  • Bis zum Dictionary Zugriff

(C) Brandeis Consulting

Planviz in Eclipse

(C) Brandeis Consulting

Beispiel: Performance-Analyse von

Calculation Views

  • Demo und Übung:
    • Aufruf vom PlanViz für CV_CUBE_STARJOIN_SOL
    • Alle Spalten abfragen vs. Nur Spalten von Tabellen TASKS und USERS
  • Übung Ausführung eines CalcViews mit JOIN analysieren
(C) Brandeis Consulting

Performance Tipps & Tricks (1/2)

  • Ergebnis aggregiert an Frontend liefern
    • Richtiger Detailgrad und Ergebniseinschränkung
    • Aggregationen und Berechnung in der HANA durchführen
    • Bei Bedarf Voraggregation in unteren Knoten des Calculation View durchführen
  • Filter Push-Down prüfen
    • Ergebnismenge frühzeitig einschränken
    • Werden Filterbedingungen an die SELECT-Anweisung für die Quelltabellen gereicht?
    • Bei Bedarf Filterung mit Parametern einbauen
  • Ausführung von Joins prüfen
    • Kardinalität eintragen (manuell prüfen!)
    • Referential Join, Left Outer Join mit Kardinalität n:1 : Werden nur bei Bedarf ausgeführt
    • Join-Pruning
(C) Brandeis Consulting

Performance Tipps & Tricks (2/2)

  • UNION-Knoten
    • Union node pruning: Nicht alle Quellknoten abfragen
      • Strategie 1: Spalte Source mit Constant Mapping definieren und * Filter auf diese Spalte
      • Strategie 2: Pruning Configuration Table in Semantik-Knoten
  • Modellierungsansätze ausprobieren
    • JOIN vs. UNION
    • UNION in Kombination mit Aggregation meist schneller als JOIN und Aggregation
  • Berechnete Spalten
    • Berechnung auf Kennzahlen auf möglichst aggregierter Ebene durchführen
    • Berechnete Spalten in Filter und Join vermeiden bzw. Performance-Auswirkung prüfen
      • Typkonvertierung vermeiden in Filter, Join
      • Ausführung in SQL Engine statt Column Engine (andere Syntax!)
  • Große Tabellen Partitionieren
(C) Brandeis Consulting

SAP HANA Performance Guide for Developers

SAP HANA Performance Guide for Developers

Parallization

Pruning Configuration Table

(C) Brandeis Consulting